****************************************************************************************************************************
Date: 04 FEB 2016

Purpose: Better identification of multiple and still births if twins

****************************************************************************************************************************;

libname in 'G:\Data\Rawdata\702727\data201006';

*Henter datatsæt med diagnoser og pnr-numre (lbr_pop);
%macro diag(start,slut);
%do i=&start %to &slut;

data diag&i;
set in.lpr_pop&i;

drop HENM PATTYPE; /*Dropper henvisningsmåde (ingen, alm prak,...) og patienttype (ambulant, heldøgn, skadestue...)*/

temp_sgh=sgh*1;
drop sgh;
rename temp_sgh=sgh;

%end; 
%mend;
%diag(1977,1994);
run;

*Laver et samlet datasæt med aktions-diagnoser for årene 1977 til 1994;
data adiag;
set Diag1977 Diag1978 Diag1979 Diag1980 Diag1981 Diag1982 Diag1983 Diag1984 Diag1985 Diag1986 Diag1987 Diag1988 Diag1989 
Diag1990 Diag1991 Diag1992 Diag1993 Diag1994 
;
run;

proc datasets;
delete Diag1977 Diag1978 Diag1979 Diag1980 Diag1981 Diag1982 Diag1983 Diag1984 Diag1985 Diag1986 Diag1987 Diag1988 Diag1989 
Diag1990 Diag1991 Diag1992 Diag1993 Diag1994;
run;


*Udtrækker år, måned og dag fra diagnosedatoen.;
data adiag1;
set adiag;

dato_diag1=put(inddto,ddmmyy6.);
dato_diag=input(dato_diag1,ddmmyy6.);

year_diag=year(dato_diag);
month_diag=month(dato_diag);
day_diag=day(dato_diag);
 
run;


*Henter datatsæt med alle typer af diagnoser ikke kun aktionsdiagnosen (lpr_diag);

%macro diagnoser(start,slut);
%do i=&start %to &slut;

data sygdom&i;
set in.lpr_diag&i;

%end; 
%mend;
%diagnoser(1977,1994);

*Laver et samlet datasæt med diagnoser for årene 1997 til 2010;
data diagnoser;

set sygdom1977 sygdom1978 sygdom1979 sygdom1980 sygdom1981 sygdom1982 sygdom1983 sygdom1984 sygdom1985 sygdom1986 sygdom1987 sygdom1988 sygdom1989 
sygdom1990 sygdom1991 sygdom1992 sygdom1993 sygdom1994;
run; 

proc datasets;
delete sygdom1977 sygdom1978 sygdom1979 sygdom1980 sygdom1981 sygdom1982 sygdom1983 sygdom1984 sygdom1985 sygdom1986 sygdom1987 sygdom1988 sygdom1989 
sygdom1990 sygdom1991 sygdom1992 sygdom1993 sygdom1994;
run;

*Sletter henvisningsdiagnoser (8.561.840 observationer);
data diagnoser1;
set diagnoser;
if DIAGTYPE="H" then delete;
run;

proc sort data=diagnoser1;
by recnum;
run;

proc sort data=adiag1(drop=inddto dato_diag1);
by recnum;
run;

data alle_diag;
merge adiag1 (in=a) diagnoser1;
by recnum;
if a;
run;

*Ændre rækkefølgen på variablene;
data alle_diag;
retain pnr recnum dato_diag year_diag month_diag day_diag sgh ADIAG DIAG DIAGTYPE;
set alle_diag;
run;

proc sort data=alle_diag;
by pnr recnum diagtype;
run;

/**************************************************************************
Danner en sample hvor jeg kun beholder forskellige diagnoser for multiples.
***************************************************************************/

data alle_diag1;
set alle_diag;
aktionskode=substr(ADIAG, 1, 3);
run;

*Udleder relvante diagnoser;
data alle_diag2;
set alle_diag1;
Y80=0;
if aktionskode='Y80' then Y80=1; *Single born;
Y81=0;
if aktionskode='Y81' then Y81=1; *Twin, mate liveborn;
Y82=0;
if aktionskode='Y82' then Y82=1; *Twin, mate stillborn;
Y83=0;
if aktionskode='Y83' then Y83=1; *Twin, unspecified;
Y84=0;
if aktionskode='Y84' then Y84=1; *Other, multiples, mates all liveborn;
Y85=0;
if aktionskode='Y85' then Y85=1; *Other, multiples, mates all stillbornn;
Y86=0;
if aktionskode='Y86' then Y86=1; *Other, multiples, mates live- and stillborn;
Y87=0;
if aktionskode='Y87' then Y87=1; *Other, multiples, unspecified;

run;

proc freq data=alle_diag2;
table y:;
run;


data births;
set alle_diag2;
if Y80=1 or Y81=1 or Y82=1 or Y83=1 or Y84=1 or Y85=1 or Y86=1 or Y87=1 then output births;
run;


data births1;
set births (drop=sgh ADIAG DIAG DIAGTYPE aktionskode);
label Y80='Single born';
label Y81='Twin, mate liveborn';
label Y82='Twin, mate stillborn';
label Y83='Twin, unspecified';
label Y84='Other, multiples, mates all liveborn';
label Y85='Other, multiples, mates all stillbor';
label Y86='Other, multiples, mates live- and stillborn';
label Y87='Other, multiples, unspecified';
run;

proc sort data=births1 nodupkey;
by pnr;
run;

proc freq data=births1;
table y: year_diag;
run;

data births1;
set births1 (drop=year_diag month_diag day_diag recnum);
rename dato_diag=date_diag;
run;

/***************************************
Gemmer data med detaljeret fødsels info
****************************************/
*STATA datasæt;
proc export data=births1 outfile="G:\Data\Workdata\702727\xru\NICU project\Datasæt\birth_details.dta" dbms=stata replace;
run;






/*************************************************
Test merge på mit hoved data
 - for at sikre, at det er på barnets record
**************************************************/

******************************************************
*Henter NICU data som dette skal kobles sammen med
******************************************************;
libname in 'G:\Data\Workdata\702727\xru\NICU project\Datasæt';

data nicu;
set in.nicu_parentalhealth (keep = pnr pnrm pnrf FODTDATO birthyear male); 

if birthyear<1977 then delete;
if birthyear>1994 then delete;

run;

proc freq data=nicu;
table birthyear;
run;

proc sort data=nicu;
by pnr fodtdato;
run;

*Merger;
data nicu_births1;
merge nicu (in=a) births1;
by pnr;
if a;
run;
